package com.ruicar.afs.cloud.apply.pre.loan.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruicar.afs.cloud.apply.common.entity.ApplyCustBaseInfo;
import com.ruicar.afs.cloud.common.modules.apply.dto.ApplyIdCardDTO;
import com.ruicar.afs.cloud.apply.contract.vo.ApplyLoanAmtVo;
import com.ruicar.afs.cloud.apply.pre.loan.condition.CustInfoCondition;
import com.ruicar.afs.cloud.common.core.exception.AfsBaseException;

import java.util.List;

/**
 * @author: Lee
 * @date: 2020/5/13 21:18
 * @description: 客户service
 */
public interface ApplyCustBaseInfoService extends IService<ApplyCustBaseInfo> {
    /**
     * 获取客户主表信息
     *
     * @param condition 查询条件
     * @return 客户主表信息
     */
    ApplyCustBaseInfo getCustBaseInfo(CustInfoCondition condition);

    /**
     * 通过申请编号和证件编号查询
     * @param applyNo
     * @param certNo
     * @return
     */
    public ApplyCustBaseInfo getCustInfoByCertNo(String applyNo,String certNo);

    /**
     * 保存工作信息-app
     *
     * @param condition 工作信息
     */
    void saveWorkData(CustInfoCondition condition);

    /**
     * 保存地址信息-app
     *
     * @param condition 地址信息
     */
    void saveAddress(CustInfoCondition condition);

    /**
     * 通过申请编号获取客户列表
     *
     * @param applyNo 申请编号
     * @return 客户列表
     */
    List<ApplyCustBaseInfo> getCustBaseInfoList(String applyNo);

    /**
     * 通过申请编号和角色获取客户信息
     *
     * @param applyNo  申请编号
     * @param custRole 客户角色
     * @return 客户信息
     */
    ApplyCustBaseInfo getCustBaseInfo(String applyNo, String custRole);

    /**
     * 保存客户基础信息-app
     *
     * @param custInfoCondition 客户基础信息
     */
    void saveCustomerBaseInfo(CustInfoCondition custInfoCondition) throws AfsBaseException;

    /**
     * 获取主共保申请编号
     */
    List<ApplyLoanAmtVo> getApplyLoanAmt(List certNo);

    /**
     * 根据身份证获取订单手机号
     */
    List<ApplyCustBaseInfo> getApplyPhone(ApplyIdCardDTO condition);

    /**
     * 保存客户信息及证件照
     *
     * @param condition
     */
    List saveSignParams(CustInfoCondition condition);

    /**
     * 删除客户信息，地址信息，联系人信息
     */
    boolean deleteCustomerInfo(CustInfoCondition condition);
}
